package com.tay.main;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;

public class Main {

	public static void main(String[] args) throws Exception {

		/**
		 * 实例化一个本地客户端
		 */
		Configuration conf = new Configuration();

		// 获取hdfs客户端对象的时候，需要指定文件系统的类型为hdfs，同时也要注意用户的身份问题
		conf.set("fs.defaultFS", "hdfs://192.168.88.101:8020");

		// 可以通过如下的方法，进行客户端身份的"伪造"
		System.setProperty("HADOOP_USER_NAME", "root");

		// hdfs的客户端对象
		FileSystem fs = FileSystem.get(conf);

		/**
		 * 查询hdfs根目录下的文件
		 */
		RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), false);
		while (listFiles.hasNext()) {
			LocatedFileStatus fileStatus = listFiles.next();
			Path path = fileStatus.getPath();
			String filename = path.getName();
			System.out.println(filename);
		}

		/**
		 * 上传文件
		 */
		// fs.copyFromLocalFile(new Path("d://test/test002.txt"), new Path("/"));
		// fs.close();

		/**
		 * 下载文件
		 */
		fs.copyToLocalFile(new Path("/test002.txt"), new Path("d://"));
		// fs.copyToLocalFile(false, new Path("/test001.txt"), new Path("d://"), true);
		fs.close();
		// =============================
	}

}
